package mymyoux.io.mserveur.events
{
	import flash.events.Event;
	
	import mymyoux.io.mserveur.MRoom;
		import mymyoux.events.IStaticListenable;
	/**
	 * MLoginsEvent est envoyé par une MRoom lors d'évènements qui se produisent dans celle-ci.
	 * @author Mymyoux
	 * @version 1.0
	 */
	public class MRoomEvent extends Event  implements IStaticListenable
	{
		/*
		**
		 * Evenement envoyé lors de la conexion au salon.
		 *
		public static const CONNECT:String="connect";

		**
		 * Evenement envoyé lorsqu'une erreur se produit.
		 *
		public static const ERROR:String="error";
		*/
		/**
		 * Evenement envoyé lors de la déconexion volontaire du salon.
		 */
		public static const DISCONNECT:String="disconnect";
		/**
		 * Evenement envoyé lors de la réception d'une donnée du serveur.
		 *
		 */
		public static const DATA:String="data";

		/**
		 * @private
		 */
		protected var _value:*
		/**
		 * @private
		 */
		protected var _room:MRoom;
		/**
		 * @private
		 */
		protected var _idx:int;
		/**
		 * Crée un évènement de type MRoomEvent
		 * @param type Type de l'évènement.
		 * @param room Salon lié à l'évènement.
		 * @param value Valeur liée à l'évènement.
		 * @param idx Idx du client lié à l'évènement. -1 si l'évènement n'est pas relié à un client en particulier.
		 * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false.
		 * @param cancelable Determines whether the Event object can be canceled. The default values is false.
		 */
		public function MRoomEvent(type:String,room:MRoom, value:*,idx:int=-1, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			_value=value;
			_room=room;
			_idx=idx;
			super(type, bubbles, cancelable);
		}
		/**
		 * @inheritDoc
		 */
		 public override function clone():Event
		 {
		 	return new MRoomEvent(type,room,value,idx,bubbles,cancelable);
		 }
		/**
		 * Valeur liée à l'évènement.
		 */
		public function get value():*
		{
			return _value;
		}
		/**
		 * Nom du salon lié à l'évènement.
		 */
		public function get name():String
		{
			return _room.name;
		}
		/**
		 * Salon lié à l'évènement.
		 */
		public function get room():MRoom
		{
			return _room;
		}
		/**
		 * Idx du client lié à l'évènement. -1 si l'évènement n'est pas relié à un client en particulier.
		 */
		public function get idx():int
		{
			return _idx;
		}
		/**
		 * @copy mymyoux.core.IObject#clone()
		/**
		 * @copy mymyoux.core.IObject#toString()
		 */
		public override function toString():String
		{
			return "[MRoomEvent type=\""+type+"\" salon=\""+name+"\" idx=\""+idx+"\" value=\""+value+"\"]";
		}
	}
}